1.1 R 的获取和安装
官网下载安装R:
R可以在CRAN(Comprehensive R Archive Network,http://cran.r-project.org)上免费下载。
Linux、Mac OS X和Windows都有相应编译好的二进制版本。
官网下载安装Rstudio:
RStudio是R的集成开发环境,界面更加丰富实用,使用起来更加方便。
Rstudio可以在官网(https://www.rstudio.com/products/rstudio/download/)上免费下载。
PS:必须先安装R,再安装RStudio。
1.2 R的使用
R是一种区分大小写的解释型语言。
R中有多种数据类型,包括向量、矩阵、数据框(与 数据集类似)以及列表(各种对象的集合)。
R中的多数功能是由程序内置函数、用户自编函数和对对象的创建和操作所提供的。对象可以是任何东西(数据、函数、图形、分析结果,等等)。
一些基本函数是默认直接可用的,而其他高级函数则包含于按需加载的程序包中。
1. 简单示例
R语句由函数和赋值构成。R使用<-,而不是传统的=作为赋值符号。
注释由符号#开头。在#之后出现的任何文本都会被R解释器忽略。
例:研究10名婴儿在出生后一年内的月龄和体重的关系
age <- c(1,3,5,2,11,9,3,9,12,3) #输入月龄数据
weight <- c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1) #输入体重数据
mean(weight) #求体重均值
[1] 7.06sd(weight) #求体重标准差
[1] 2.077498cor(age,weight) #求年龄和体重的相关度
[1] 0.9075655plot(age,weight) #可视化年龄和体重的关系和趋势,见图1-1
q()
图1-1 婴儿体重(千克)和年龄(月)的散点图
2. 获取帮助
R的内置帮助系统提供了当前已安装包中所有函数的细节、参考文献以及使用示例。
例:常用帮助函数 help("foo")
或 ?foo
来查看函数 foo 的帮助(引号可以省略)。
3. 工作空间
工作空间(workspace)就是当前R的工作环境,它存储着所有用户定义的对象(向量、矩阵、 函数、数据框、列表)。用于管理工作空间的部分标准命令见表1-1。
表1-1 用于管理R工作空间的函数
函数 | 功能 |
---|---|
getwd() | 显示当前的工作目录 |
setwd("mydirectory") | 修改当前的工作目录为 mydirectory |
ls() | 列出当前工作空间中的对象 |
help(options) | 显示可用选项的说明 |
options() | 显示或设置当前选项 |
history(#) | 显示最近使用过的#个命令(默认值为 25) |
savehistory("myfile") | 保存命令历史到文件 myfile 中(默认值为.Rhistory) |
loadhistory("myfile") | 载入一个命令历史文件(默认值为.Rhistory) |
save.image("myfile") | 保存工作空间到文件 myfile 中(默认值为.RData) |
save(objectlist, file="myfile") | 保存指定对象到一个文件中 |
load("myfile") | 读取一个工作空间到当前会话中(默认值为.RData) |
q() | 退出 R ,将会询问你是否保存工作空间 |
例:用于管理R工作空间的命令使用
setwd("C:/myprojects/project1") #当前工作目录被设置为C:/myprojects/project1
#注意:R将反斜杠( \ )作为一个转义符,我们要写的是/不是\.
options() #当前的选项设置情况将显示出来
options(digits=3) #格式化数字为小数点后三位有效数字的格式
x <‐ runif(20) #创建了一个包含20个均匀分布随机变量的向量
summary(x) #生成了此数据的摘要统计量
hist(x) #生成了此数据直方图
q() #询问是否退出,y或者n
4. 输入和输出
输入:函数 source(”filename”)
文本输出:函数 sink(”filename”)
图形输出: png(”filename.png”)
、 jpeg(”filename.jpg”)
等等
返回到终端: dev.off()
1.3 包
包(package)是R函数、数据、预编译代码以一种定义完善的格式组成的集合。
包可从http://cran.r-project.org/ web/packages下载。
计算机上存储包的目录称为库(library)。
函数.libPaths()能够显示库所在的位置,
函数library()则可以显示库中有哪些包,
命令search()可以知道哪些包已加载并可使用。
例:包gclus中提供了创建增强型散点图的函数。
install.packages("gclus") #安装包update.packages("gclus") #更新包library(gclus) #载入包help(package="gclus") #输出包的描述和其中的函数名称和数据集名称的列表
R语言编程中的常见错误
使用了错误的大小写。help()、Help()和HELP()是三个不同的函数(只有第一个是正确的)。
忘记使用必要的引号。install.packages("gclus")能够正常执行,然而 install.packages(gclus)将会报错。
在函数调用时忘记使用括号。例如,要使用help()而非help。即使函数无需参数,仍需加上()。
在Windows上,路径名中使用了\。R将反斜杠视为一个转义字符。
使用了一个尚未载入包中的函数。函数order.clusters()包含在包gclus中。如果还没有载入这个包就使用它,将会报错。
1.4 批处理
通常,我们会交互式地使用R:在提示符后输入命令,接着等待该命令的输出结果。
如果要以一种重复的、标准化的、无人值守的方式执行某个R程序,可以在R中编写程序,在批处理模式下执行它。
如何以批处理模式运行R与使用的操作系统有关。
在Linux或Mac OS X系统下,可以在终端窗口中使用如下命令: R CMD BATCH options infile outfile
其中infile是包含了要执行的R代码所在文件的文件名
outfile是接收输出文件的文件名
options部分则列出了控制执行细节的选项
对于Windows,则需使用:
"C:\Program Files\R\R-3.1.0\bin\R.exe"CMD BATCH
➥--vanilla--slave"c:\my projects\myscript.R"
将路径调整为R.exe所在的相应位置和脚本文件所在位置。
1.5 将输出用为输入:结果的重用
R中分析的输出结果可轻松保存,并作为进一步分析的输入使用。
例:汽车数据mtcars
#执行一次简单线性回归,通过车身重量(wt)预测每加仑行驶的英里数(mpg)
lm(mpg~wt, data=mtcars)
#此时结果将显示在屏幕上,不会保存任何信息。
lmfit <‐ lm(mpg~wt, data=mtcars)
#执行回归,区别是在新建的列表对象lmfit中保存结果
summary(lmfit) #分析lmfit的结果的统计概要
Call:
lm(formula = mpg ~ wt, data = mtcars)
Residuals:
Min 1Q Median 3Q Max
-4.5432 -2.3647 -0.1252 1.4096 6.8727
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 37.2851 1.8776 19.858 < 2e-16 ***
wt -5.3445 0.5591 -9.559 1.29e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.046 on 30 degrees of freedom
Multiple R-squared: 0.7528, Adjusted R-squared: 0.7446
F-statistic: 91.38 on 1 and 30 DF, p-value: 1.294e-10
plot(lmfit) #生成回归诊断图形,见图1-2
cook<-cooks.distance(lmfit) #计算和保存lmfit的影响度量统计量,保存在cook中
plot(cook) #对其绘图,见图1-3
predict(lmfit,mynewdata) #在新的车身重量数据上对每加仑行驶的英里数进行预测
Error in predict.lm(lmfit, mynewdata) : 找不到对象'mynewdata'
#此处报错是因为没有创建新的车身重量数据mynewdata
图1-2 回归诊断图形
图1-3 影响度量统计量
1.6 处理大数据
R可以处理GB级到TB级的数据分析问题,需要考虑数据集的大小和要应用的统计方法,用R处理大数据需要专门的手段。
具体可在原书附录F中学习讨论。
1.7 示例实践
例:使用一个新的包,vcd包(一个用于可视化类别数据的包)
help.start() #打开帮助文档首页
install.packages("vcd") #安装vcd包
help(package="vcd") #了解vcd包的内容,列出此包中可用的函数和数据集library(vcd) #载入这个包
help(Arthritis) #阅读数据集Arthritis的描述
Arthritis #显示数据集Arthritis的内容
example(Arthritis) #运行数据集Arthritis自带的示例,将输出一幅展示关节炎治疗情况和治 疗结果之间关系的图,见图1-4
图1-4 关节炎治疗情况和治疗结果之间关系